﻿using System;

namespace maranov.TeaTimer
{
    /// <summary>
    /// Časovač pro měření času přípravy nápojů a zobrazení průběhu.
    /// </summary>
    public interface ITeaTimer
    {
        /// <summary>
        /// Spuštění časovače dle náhodné hodnoty z rozsahu.
        /// </summary>
        /// <param name="minutesMin">Časový rozsah - Od (min)</param>
        /// <param name="minutesMax">Časový rozsah - Do (min)</param>
        /// <returns>Počet měřených sekund.</returns>
        int Start(int minutesMin, int minutesMax);

        /// <summary>
        /// Zastavení časovače.
        /// </summary>
        /// <returns>Informace, zda časovač doběhl.</returns>
        bool Stop();

        /// <summary>
        /// Čas vypršel.
        /// </summary>
        event EventHandler<EventArgs> TimeUp;

        /// <summary>
        /// Tik měřeného času - pro zobrazení průběhu.
        /// </summary>
        event EventHandler<TickEventArgs> Tick;

        /// <summary>
        /// Interval tiku měřeného času.
        /// </summary>
        double TickInterval
        {
            get;
            set;
        }

        /// <summary>
        /// Aktivita časovače.
        /// </summary>
        bool Running
        {
            get;
        }

        /// <summary>
        /// Měřen přesčas.
        /// </summary>
        bool Overtime
        {
            get;
        }
    }
}
